package com.kgc.sbt.beans;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class ProductExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    private Integer limit;

    private Long offset;

    public ProductExample() {
        oredCriteria = new ArrayList<>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    public void setLimit(Integer limit) {
        this.limit = limit;
    }

    public Integer getLimit() {
        return limit;
    }

    public void setOffset(Long offset) {
        this.offset = offset;
    }

    public Long getOffset() {
        return offset;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andProductIdIsNull() {
            addCriterion("product_id is null");
            return (Criteria) this;
        }

        public Criteria andProductIdIsNotNull() {
            addCriterion("product_id is not null");
            return (Criteria) this;
        }

        public Criteria andProductIdEqualTo(Integer value) {
            addCriterion("product_id =", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdNotEqualTo(Integer value) {
            addCriterion("product_id <>", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdGreaterThan(Integer value) {
            addCriterion("product_id >", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_id >=", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdLessThan(Integer value) {
            addCriterion("product_id <", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdLessThanOrEqualTo(Integer value) {
            addCriterion("product_id <=", value, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdIn(List<Integer> values) {
            addCriterion("product_id in", values, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdNotIn(List<Integer> values) {
            addCriterion("product_id not in", values, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdBetween(Integer value1, Integer value2) {
            addCriterion("product_id between", value1, value2, "productId");
            return (Criteria) this;
        }

        public Criteria andProductIdNotBetween(Integer value1, Integer value2) {
            addCriterion("product_id not between", value1, value2, "productId");
            return (Criteria) this;
        }

        public Criteria andProductCodeIsNull() {
            addCriterion("product_code is null");
            return (Criteria) this;
        }

        public Criteria andProductCodeIsNotNull() {
            addCriterion("product_code is not null");
            return (Criteria) this;
        }

        public Criteria andProductCodeEqualTo(String value) {
            addCriterion("product_code =", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeNotEqualTo(String value) {
            addCriterion("product_code <>", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeGreaterThan(String value) {
            addCriterion("product_code >", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeGreaterThanOrEqualTo(String value) {
            addCriterion("product_code >=", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeLessThan(String value) {
            addCriterion("product_code <", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeLessThanOrEqualTo(String value) {
            addCriterion("product_code <=", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeLike(String value) {
            addCriterion("product_code like", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeNotLike(String value) {
            addCriterion("product_code not like", value, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeIn(List<String> values) {
            addCriterion("product_code in", values, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeNotIn(List<String> values) {
            addCriterion("product_code not in", values, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeBetween(String value1, String value2) {
            addCriterion("product_code between", value1, value2, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductCodeNotBetween(String value1, String value2) {
            addCriterion("product_code not between", value1, value2, "productCode");
            return (Criteria) this;
        }

        public Criteria andProductNameIsNull() {
            addCriterion("product_name is null");
            return (Criteria) this;
        }

        public Criteria andProductNameIsNotNull() {
            addCriterion("product_name is not null");
            return (Criteria) this;
        }

        public Criteria andProductNameEqualTo(String value) {
            addCriterion("product_name =", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotEqualTo(String value) {
            addCriterion("product_name <>", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameGreaterThan(String value) {
            addCriterion("product_name >", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameGreaterThanOrEqualTo(String value) {
            addCriterion("product_name >=", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLessThan(String value) {
            addCriterion("product_name <", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLessThanOrEqualTo(String value) {
            addCriterion("product_name <=", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameLike(String value) {
            addCriterion("product_name like", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotLike(String value) {
            addCriterion("product_name not like", value, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameIn(List<String> values) {
            addCriterion("product_name in", values, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotIn(List<String> values) {
            addCriterion("product_name not in", values, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameBetween(String value1, String value2) {
            addCriterion("product_name between", value1, value2, "productName");
            return (Criteria) this;
        }

        public Criteria andProductNameNotBetween(String value1, String value2) {
            addCriterion("product_name not between", value1, value2, "productName");
            return (Criteria) this;
        }

        public Criteria andBarCodeIsNull() {
            addCriterion("bar_code is null");
            return (Criteria) this;
        }

        public Criteria andBarCodeIsNotNull() {
            addCriterion("bar_code is not null");
            return (Criteria) this;
        }

        public Criteria andBarCodeEqualTo(Long value) {
            addCriterion("bar_code =", value, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeNotEqualTo(Long value) {
            addCriterion("bar_code <>", value, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeGreaterThan(Long value) {
            addCriterion("bar_code >", value, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeGreaterThanOrEqualTo(Long value) {
            addCriterion("bar_code >=", value, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeLessThan(Long value) {
            addCriterion("bar_code <", value, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeLessThanOrEqualTo(Long value) {
            addCriterion("bar_code <=", value, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeIn(List<Long> values) {
            addCriterion("bar_code in", values, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeNotIn(List<Long> values) {
            addCriterion("bar_code not in", values, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeBetween(Long value1, Long value2) {
            addCriterion("bar_code between", value1, value2, "barCode");
            return (Criteria) this;
        }

        public Criteria andBarCodeNotBetween(Long value1, Long value2) {
            addCriterion("bar_code not between", value1, value2, "barCode");
            return (Criteria) this;
        }

        public Criteria andBrandIdIsNull() {
            addCriterion("brand_id is null");
            return (Criteria) this;
        }

        public Criteria andBrandIdIsNotNull() {
            addCriterion("brand_id is not null");
            return (Criteria) this;
        }

        public Criteria andBrandIdEqualTo(Long value) {
            addCriterion("brand_id =", value, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdNotEqualTo(Long value) {
            addCriterion("brand_id <>", value, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdGreaterThan(Long value) {
            addCriterion("brand_id >", value, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdGreaterThanOrEqualTo(Long value) {
            addCriterion("brand_id >=", value, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdLessThan(Long value) {
            addCriterion("brand_id <", value, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdLessThanOrEqualTo(Long value) {
            addCriterion("brand_id <=", value, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdIn(List<Long> values) {
            addCriterion("brand_id in", values, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdNotIn(List<Long> values) {
            addCriterion("brand_id not in", values, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdBetween(Long value1, Long value2) {
            addCriterion("brand_id between", value1, value2, "brandId");
            return (Criteria) this;
        }

        public Criteria andBrandIdNotBetween(Long value1, Long value2) {
            addCriterion("brand_id not between", value1, value2, "brandId");
            return (Criteria) this;
        }

        public Criteria andFirstIdIsNull() {
            addCriterion("first_id is null");
            return (Criteria) this;
        }

        public Criteria andFirstIdIsNotNull() {
            addCriterion("first_id is not null");
            return (Criteria) this;
        }

        public Criteria andFirstIdEqualTo(String value) {
            addCriterion("first_id =", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdNotEqualTo(String value) {
            addCriterion("first_id <>", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdGreaterThan(String value) {
            addCriterion("first_id >", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdGreaterThanOrEqualTo(String value) {
            addCriterion("first_id >=", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdLessThan(String value) {
            addCriterion("first_id <", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdLessThanOrEqualTo(String value) {
            addCriterion("first_id <=", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdLike(String value) {
            addCriterion("first_id like", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdNotLike(String value) {
            addCriterion("first_id not like", value, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdIn(List<String> values) {
            addCriterion("first_id in", values, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdNotIn(List<String> values) {
            addCriterion("first_id not in", values, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdBetween(String value1, String value2) {
            addCriterion("first_id between", value1, value2, "firstId");
            return (Criteria) this;
        }

        public Criteria andFirstIdNotBetween(String value1, String value2) {
            addCriterion("first_id not between", value1, value2, "firstId");
            return (Criteria) this;
        }

        public Criteria andSecondIdIsNull() {
            addCriterion("second_id is null");
            return (Criteria) this;
        }

        public Criteria andSecondIdIsNotNull() {
            addCriterion("second_id is not null");
            return (Criteria) this;
        }

        public Criteria andSecondIdEqualTo(String value) {
            addCriterion("second_id =", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdNotEqualTo(String value) {
            addCriterion("second_id <>", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdGreaterThan(String value) {
            addCriterion("second_id >", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdGreaterThanOrEqualTo(String value) {
            addCriterion("second_id >=", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdLessThan(String value) {
            addCriterion("second_id <", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdLessThanOrEqualTo(String value) {
            addCriterion("second_id <=", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdLike(String value) {
            addCriterion("second_id like", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdNotLike(String value) {
            addCriterion("second_id not like", value, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdIn(List<String> values) {
            addCriterion("second_id in", values, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdNotIn(List<String> values) {
            addCriterion("second_id not in", values, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdBetween(String value1, String value2) {
            addCriterion("second_id between", value1, value2, "secondId");
            return (Criteria) this;
        }

        public Criteria andSecondIdNotBetween(String value1, String value2) {
            addCriterion("second_id not between", value1, value2, "secondId");
            return (Criteria) this;
        }

        public Criteria andThirdIdIsNull() {
            addCriterion("third_id is null");
            return (Criteria) this;
        }

        public Criteria andThirdIdIsNotNull() {
            addCriterion("third_id is not null");
            return (Criteria) this;
        }

        public Criteria andThirdIdEqualTo(String value) {
            addCriterion("third_id =", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdNotEqualTo(String value) {
            addCriterion("third_id <>", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdGreaterThan(String value) {
            addCriterion("third_id >", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdGreaterThanOrEqualTo(String value) {
            addCriterion("third_id >=", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdLessThan(String value) {
            addCriterion("third_id <", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdLessThanOrEqualTo(String value) {
            addCriterion("third_id <=", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdLike(String value) {
            addCriterion("third_id like", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdNotLike(String value) {
            addCriterion("third_id not like", value, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdIn(List<String> values) {
            addCriterion("third_id in", values, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdNotIn(List<String> values) {
            addCriterion("third_id not in", values, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdBetween(String value1, String value2) {
            addCriterion("third_id between", value1, value2, "thirdId");
            return (Criteria) this;
        }

        public Criteria andThirdIdNotBetween(String value1, String value2) {
            addCriterion("third_id not between", value1, value2, "thirdId");
            return (Criteria) this;
        }

        public Criteria andProviderIdIsNull() {
            addCriterion("provider_id is null");
            return (Criteria) this;
        }

        public Criteria andProviderIdIsNotNull() {
            addCriterion("provider_id is not null");
            return (Criteria) this;
        }

        public Criteria andProviderIdEqualTo(Integer value) {
            addCriterion("provider_id =", value, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdNotEqualTo(Integer value) {
            addCriterion("provider_id <>", value, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdGreaterThan(Integer value) {
            addCriterion("provider_id >", value, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("provider_id >=", value, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdLessThan(Integer value) {
            addCriterion("provider_id <", value, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdLessThanOrEqualTo(Integer value) {
            addCriterion("provider_id <=", value, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdIn(List<Integer> values) {
            addCriterion("provider_id in", values, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdNotIn(List<Integer> values) {
            addCriterion("provider_id not in", values, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdBetween(Integer value1, Integer value2) {
            addCriterion("provider_id between", value1, value2, "providerId");
            return (Criteria) this;
        }

        public Criteria andProviderIdNotBetween(Integer value1, Integer value2) {
            addCriterion("provider_id not between", value1, value2, "providerId");
            return (Criteria) this;
        }

        public Criteria andPriceIsNull() {
            addCriterion("price is null");
            return (Criteria) this;
        }

        public Criteria andPriceIsNotNull() {
            addCriterion("price is not null");
            return (Criteria) this;
        }

        public Criteria andPriceEqualTo(BigDecimal value) {
            addCriterion("price =", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceNotEqualTo(BigDecimal value) {
            addCriterion("price <>", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceGreaterThan(BigDecimal value) {
            addCriterion("price >", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("price >=", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceLessThan(BigDecimal value) {
            addCriterion("price <", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {
            addCriterion("price <=", value, "price");
            return (Criteria) this;
        }

        public Criteria andPriceIn(List<BigDecimal> values) {
            addCriterion("price in", values, "price");
            return (Criteria) this;
        }

        public Criteria andPriceNotIn(List<BigDecimal> values) {
            addCriterion("price not in", values, "price");
            return (Criteria) this;
        }

        public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("price between", value1, value2, "price");
            return (Criteria) this;
        }

        public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("price not between", value1, value2, "price");
            return (Criteria) this;
        }

        public Criteria andAvgCostIsNull() {
            addCriterion("avg_cost is null");
            return (Criteria) this;
        }

        public Criteria andAvgCostIsNotNull() {
            addCriterion("avg_cost is not null");
            return (Criteria) this;
        }

        public Criteria andAvgCostEqualTo(BigDecimal value) {
            addCriterion("avg_cost =", value, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostNotEqualTo(BigDecimal value) {
            addCriterion("avg_cost <>", value, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostGreaterThan(BigDecimal value) {
            addCriterion("avg_cost >", value, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostGreaterThanOrEqualTo(BigDecimal value) {
            addCriterion("avg_cost >=", value, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostLessThan(BigDecimal value) {
            addCriterion("avg_cost <", value, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostLessThanOrEqualTo(BigDecimal value) {
            addCriterion("avg_cost <=", value, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostIn(List<BigDecimal> values) {
            addCriterion("avg_cost in", values, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostNotIn(List<BigDecimal> values) {
            addCriterion("avg_cost not in", values, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("avg_cost between", value1, value2, "avgCost");
            return (Criteria) this;
        }

        public Criteria andAvgCostNotBetween(BigDecimal value1, BigDecimal value2) {
            addCriterion("avg_cost not between", value1, value2, "avgCost");
            return (Criteria) this;
        }

        public Criteria andProductStatusIsNull() {
            addCriterion("product_status is null");
            return (Criteria) this;
        }

        public Criteria andProductStatusIsNotNull() {
            addCriterion("product_status is not null");
            return (Criteria) this;
        }

        public Criteria andProductStatusEqualTo(Integer value) {
            addCriterion("product_status =", value, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusNotEqualTo(Integer value) {
            addCriterion("product_status <>", value, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusGreaterThan(Integer value) {
            addCriterion("product_status >", value, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusGreaterThanOrEqualTo(Integer value) {
            addCriterion("product_status >=", value, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusLessThan(Integer value) {
            addCriterion("product_status <", value, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusLessThanOrEqualTo(Integer value) {
            addCriterion("product_status <=", value, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusIn(List<Integer> values) {
            addCriterion("product_status in", values, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusNotIn(List<Integer> values) {
            addCriterion("product_status not in", values, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusBetween(Integer value1, Integer value2) {
            addCriterion("product_status between", value1, value2, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductStatusNotBetween(Integer value1, Integer value2) {
            addCriterion("product_status not between", value1, value2, "productStatus");
            return (Criteria) this;
        }

        public Criteria andProductWeightIsNull() {
            addCriterion("product_weight is null");
            return (Criteria) this;
        }

        public Criteria andProductWeightIsNotNull() {
            addCriterion("product_weight is not null");
            return (Criteria) this;
        }

        public Criteria andProductWeightEqualTo(String value) {
            addCriterion("product_weight =", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotEqualTo(String value) {
            addCriterion("product_weight <>", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightGreaterThan(String value) {
            addCriterion("product_weight >", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightGreaterThanOrEqualTo(String value) {
            addCriterion("product_weight >=", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightLessThan(String value) {
            addCriterion("product_weight <", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightLessThanOrEqualTo(String value) {
            addCriterion("product_weight <=", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightLike(String value) {
            addCriterion("product_weight like", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotLike(String value) {
            addCriterion("product_weight not like", value, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightIn(List<String> values) {
            addCriterion("product_weight in", values, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotIn(List<String> values) {
            addCriterion("product_weight not in", values, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightBetween(String value1, String value2) {
            addCriterion("product_weight between", value1, value2, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductWeightNotBetween(String value1, String value2) {
            addCriterion("product_weight not between", value1, value2, "productWeight");
            return (Criteria) this;
        }

        public Criteria andProductLengthIsNull() {
            addCriterion("product_length is null");
            return (Criteria) this;
        }

        public Criteria andProductLengthIsNotNull() {
            addCriterion("product_length is not null");
            return (Criteria) this;
        }

        public Criteria andProductLengthEqualTo(String value) {
            addCriterion("product_length =", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthNotEqualTo(String value) {
            addCriterion("product_length <>", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthGreaterThan(String value) {
            addCriterion("product_length >", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthGreaterThanOrEqualTo(String value) {
            addCriterion("product_length >=", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthLessThan(String value) {
            addCriterion("product_length <", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthLessThanOrEqualTo(String value) {
            addCriterion("product_length <=", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthLike(String value) {
            addCriterion("product_length like", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthNotLike(String value) {
            addCriterion("product_length not like", value, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthIn(List<String> values) {
            addCriterion("product_length in", values, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthNotIn(List<String> values) {
            addCriterion("product_length not in", values, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthBetween(String value1, String value2) {
            addCriterion("product_length between", value1, value2, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductLengthNotBetween(String value1, String value2) {
            addCriterion("product_length not between", value1, value2, "productLength");
            return (Criteria) this;
        }

        public Criteria andProductHeightIsNull() {
            addCriterion("product_height is null");
            return (Criteria) this;
        }

        public Criteria andProductHeightIsNotNull() {
            addCriterion("product_height is not null");
            return (Criteria) this;
        }

        public Criteria andProductHeightEqualTo(String value) {
            addCriterion("product_height =", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightNotEqualTo(String value) {
            addCriterion("product_height <>", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightGreaterThan(String value) {
            addCriterion("product_height >", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightGreaterThanOrEqualTo(String value) {
            addCriterion("product_height >=", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightLessThan(String value) {
            addCriterion("product_height <", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightLessThanOrEqualTo(String value) {
            addCriterion("product_height <=", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightLike(String value) {
            addCriterion("product_height like", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightNotLike(String value) {
            addCriterion("product_height not like", value, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightIn(List<String> values) {
            addCriterion("product_height in", values, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightNotIn(List<String> values) {
            addCriterion("product_height not in", values, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightBetween(String value1, String value2) {
            addCriterion("product_height between", value1, value2, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductHeightNotBetween(String value1, String value2) {
            addCriterion("product_height not between", value1, value2, "productHeight");
            return (Criteria) this;
        }

        public Criteria andProductWidthIsNull() {
            addCriterion("product_width is null");
            return (Criteria) this;
        }

        public Criteria andProductWidthIsNotNull() {
            addCriterion("product_width is not null");
            return (Criteria) this;
        }

        public Criteria andProductWidthEqualTo(String value) {
            addCriterion("product_width =", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthNotEqualTo(String value) {
            addCriterion("product_width <>", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthGreaterThan(String value) {
            addCriterion("product_width >", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthGreaterThanOrEqualTo(String value) {
            addCriterion("product_width >=", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthLessThan(String value) {
            addCriterion("product_width <", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthLessThanOrEqualTo(String value) {
            addCriterion("product_width <=", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthLike(String value) {
            addCriterion("product_width like", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthNotLike(String value) {
            addCriterion("product_width not like", value, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthIn(List<String> values) {
            addCriterion("product_width in", values, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthNotIn(List<String> values) {
            addCriterion("product_width not in", values, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthBetween(String value1, String value2) {
            addCriterion("product_width between", value1, value2, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductWidthNotBetween(String value1, String value2) {
            addCriterion("product_width not between", value1, value2, "productWidth");
            return (Criteria) this;
        }

        public Criteria andProductColorIsNull() {
            addCriterion("product_color is null");
            return (Criteria) this;
        }

        public Criteria andProductColorIsNotNull() {
            addCriterion("product_color is not null");
            return (Criteria) this;
        }

        public Criteria andProductColorEqualTo(String value) {
            addCriterion("product_color =", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotEqualTo(String value) {
            addCriterion("product_color <>", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorGreaterThan(String value) {
            addCriterion("product_color >", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorGreaterThanOrEqualTo(String value) {
            addCriterion("product_color >=", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorLessThan(String value) {
            addCriterion("product_color <", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorLessThanOrEqualTo(String value) {
            addCriterion("product_color <=", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorLike(String value) {
            addCriterion("product_color like", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotLike(String value) {
            addCriterion("product_color not like", value, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorIn(List<String> values) {
            addCriterion("product_color in", values, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotIn(List<String> values) {
            addCriterion("product_color not in", values, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorBetween(String value1, String value2) {
            addCriterion("product_color between", value1, value2, "productColor");
            return (Criteria) this;
        }

        public Criteria andProductColorNotBetween(String value1, String value2) {
            addCriterion("product_color not between", value1, value2, "productColor");
            return (Criteria) this;
        }

        public Criteria andProducedDateIsNull() {
            addCriterion("produced_date is null");
            return (Criteria) this;
        }

        public Criteria andProducedDateIsNotNull() {
            addCriterion("produced_date is not null");
            return (Criteria) this;
        }

        public Criteria andProducedDateEqualTo(String value) {
            addCriterion("produced_date =", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateNotEqualTo(String value) {
            addCriterion("produced_date <>", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateGreaterThan(String value) {
            addCriterion("produced_date >", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateGreaterThanOrEqualTo(String value) {
            addCriterion("produced_date >=", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateLessThan(String value) {
            addCriterion("produced_date <", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateLessThanOrEqualTo(String value) {
            addCriterion("produced_date <=", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateLike(String value) {
            addCriterion("produced_date like", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateNotLike(String value) {
            addCriterion("produced_date not like", value, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateIn(List<String> values) {
            addCriterion("produced_date in", values, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateNotIn(List<String> values) {
            addCriterion("produced_date not in", values, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateBetween(String value1, String value2) {
            addCriterion("produced_date between", value1, value2, "producedDate");
            return (Criteria) this;
        }

        public Criteria andProducedDateNotBetween(String value1, String value2) {
            addCriterion("produced_date not between", value1, value2, "producedDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateIsNull() {
            addCriterion("expiration_date is null");
            return (Criteria) this;
        }

        public Criteria andExpirationDateIsNotNull() {
            addCriterion("expiration_date is not null");
            return (Criteria) this;
        }

        public Criteria andExpirationDateEqualTo(String value) {
            addCriterion("expiration_date =", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateNotEqualTo(String value) {
            addCriterion("expiration_date <>", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateGreaterThan(String value) {
            addCriterion("expiration_date >", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateGreaterThanOrEqualTo(String value) {
            addCriterion("expiration_date >=", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateLessThan(String value) {
            addCriterion("expiration_date <", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateLessThanOrEqualTo(String value) {
            addCriterion("expiration_date <=", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateLike(String value) {
            addCriterion("expiration_date like", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateNotLike(String value) {
            addCriterion("expiration_date not like", value, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateIn(List<String> values) {
            addCriterion("expiration_date in", values, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateNotIn(List<String> values) {
            addCriterion("expiration_date not in", values, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateBetween(String value1, String value2) {
            addCriterion("expiration_date between", value1, value2, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andExpirationDateNotBetween(String value1, String value2) {
            addCriterion("expiration_date not between", value1, value2, "expirationDate");
            return (Criteria) this;
        }

        public Criteria andSailStartIsNull() {
            addCriterion("sail_start is null");
            return (Criteria) this;
        }

        public Criteria andSailStartIsNotNull() {
            addCriterion("sail_start is not null");
            return (Criteria) this;
        }

        public Criteria andSailStartEqualTo(Date value) {
            addCriterion("sail_start =", value, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartNotEqualTo(Date value) {
            addCriterion("sail_start <>", value, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartGreaterThan(Date value) {
            addCriterion("sail_start >", value, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartGreaterThanOrEqualTo(Date value) {
            addCriterion("sail_start >=", value, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartLessThan(Date value) {
            addCriterion("sail_start <", value, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartLessThanOrEqualTo(Date value) {
            addCriterion("sail_start <=", value, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartIn(List<Date> values) {
            addCriterion("sail_start in", values, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartNotIn(List<Date> values) {
            addCriterion("sail_start not in", values, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartBetween(Date value1, Date value2) {
            addCriterion("sail_start between", value1, value2, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailStartNotBetween(Date value1, Date value2) {
            addCriterion("sail_start not between", value1, value2, "sailStart");
            return (Criteria) this;
        }

        public Criteria andSailEndIsNull() {
            addCriterion("sail_end is null");
            return (Criteria) this;
        }

        public Criteria andSailEndIsNotNull() {
            addCriterion("sail_end is not null");
            return (Criteria) this;
        }

        public Criteria andSailEndEqualTo(Date value) {
            addCriterion("sail_end =", value, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndNotEqualTo(Date value) {
            addCriterion("sail_end <>", value, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndGreaterThan(Date value) {
            addCriterion("sail_end >", value, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndGreaterThanOrEqualTo(Date value) {
            addCriterion("sail_end >=", value, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndLessThan(Date value) {
            addCriterion("sail_end <", value, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndLessThanOrEqualTo(Date value) {
            addCriterion("sail_end <=", value, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndIn(List<Date> values) {
            addCriterion("sail_end in", values, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndNotIn(List<Date> values) {
            addCriterion("sail_end not in", values, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndBetween(Date value1, Date value2) {
            addCriterion("sail_end between", value1, value2, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andSailEndNotBetween(Date value1, Date value2) {
            addCriterion("sail_end not between", value1, value2, "sailEnd");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionIsNull() {
            addCriterion("product_description is null");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionIsNotNull() {
            addCriterion("product_description is not null");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionEqualTo(String value) {
            addCriterion("product_description =", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionNotEqualTo(String value) {
            addCriterion("product_description <>", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionGreaterThan(String value) {
            addCriterion("product_description >", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionGreaterThanOrEqualTo(String value) {
            addCriterion("product_description >=", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionLessThan(String value) {
            addCriterion("product_description <", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionLessThanOrEqualTo(String value) {
            addCriterion("product_description <=", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionLike(String value) {
            addCriterion("product_description like", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionNotLike(String value) {
            addCriterion("product_description not like", value, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionIn(List<String> values) {
            addCriterion("product_description in", values, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionNotIn(List<String> values) {
            addCriterion("product_description not in", values, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionBetween(String value1, String value2) {
            addCriterion("product_description between", value1, value2, "productDescription");
            return (Criteria) this;
        }

        public Criteria andProductDescriptionNotBetween(String value1, String value2) {
            addCriterion("product_description not between", value1, value2, "productDescription");
            return (Criteria) this;
        }
    }

    /**
     */
    public static class Criteria extends GeneratedCriteria {
        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}